package br.com.proway.biblioteca;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.com.proway.conexao.conexao;

public class Livro extends LivroAbstract {

	private br.com.proway.conexao.conexao conexao;

	public Livro() {
		conexao = new conexao();
	}

	private String nome;
	private String resenha;
	private int anoPublicacao;
	private Editora editora;
	private CategoriaLivro categorialivro;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getResenha() {
		return resenha;
	}

	public void setResenha(String resenha) {
		this.resenha = resenha;
	}

	public int getAnoPublicacao() {
		return anoPublicacao;
	}

	public void setAnoPublicacao(int anoPublicacao) {
		this.anoPublicacao = anoPublicacao;
	}

	public Editora getEditora() {
		return editora;
	}

	public void setEditora(Editora editora) {
		this.editora = editora;
	}

	public CategoriaLivro getCategorialivro() {
		return categorialivro;
	}

	public void setCategorialivro(CategoriaLivro categorialivro) {
		this.categorialivro = categorialivro;
	}

	@Override
	public void CadastrarLivro(String nome, String resenha, int anoPublicacao,
			Editora editora, CategoriaLivro categorialivro) throws Exception {
		// TODO Auto-generated method stub
		String sql = "insert into livro (nome, resenha, anopublicacao, editora, categoria) "
				+ "values ( ? ,  ? ,  ? ,  ? , ?)";
		PreparedStatement prep = conexao.getConnection().prepareStatement(sql);
		int contador = 1;
		prep.setString(contador++, nome);
		prep.setString(contador++, resenha);
		prep.setInt(contador++, anoPublicacao);
		prep.setInt(contador++, editora.getCodigo());
		prep.setInt(contador++, categorialivro.getCodigo());
		prep.execute();
	}

	@Override
	public void ExcluirLivro(int codigo) throws Exception {
		String sql = "delete from livro where codigo = ?";
		PreparedStatement prep = conexao.getConnection().prepareStatement(sql);
		int contador = 1;
		prep.setInt(contador++, codigo);
		prep.execute();

	}

	@Override
	public void AlterarLivro(int codigo, String nome, String resenha,
			int anoPublicacao, Editora editora, CategoriaLivro categorialivro)
			throws Exception {
		String sql = "update livro set nome = ?, resenha = ?, anopublicacao = ?, editora = ?, categoria = ? where codigo = ?";
		PreparedStatement prep = conexao.getConnection().prepareStatement(sql);
		int contador = 1;
		prep.setString(contador++, nome);
		prep.setString(contador++, resenha);
		prep.setInt(contador++, anoPublicacao);
		prep.setInt(contador++, editora.getCodigo());
		prep.setInt(contador++, categorialivro.getCodigo());
		prep.setInt(contador++, codigo);
		prep.execute();
	}

	@Override
	public ResultSet ConsultarLivro(String nome) throws Exception {
		// TODO Auto-generated method stub
		String sql = "select * from livro where codigo = ?";
		PreparedStatement prep = conexao.getConnection().prepareStatement(sql);
		int contador = 1;
		prep.setString(contador++, nome);
		return prep.executeQuery();

	}

	public static void main(String[] args) throws Exception {
		Livro l = new Livro();

		Editora e = new Editora();
		e.setCodigo(1);

		CategoriaLivro cl = new CategoriaLivro();
		cl.setCodigo(1);

		l.CadastrarLivro("Head java", "Bom livro de java", 2009, e, cl);
		l.AlterarLivro(1, "Java para quem sabe programar", "Excelente livro de java", 2001, e, cl);
	}
}
